package com.aliyun.oss.utils;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.Map;

public class JwtUtils {
    //    密匙
    private static final String SECRET_KEY = "eW91ci0yNTYtYml0LXNlY3JldC1oZXJlLWJhc2U2NC1lbmNvZGVk";
    //    过期时间
    private static final long EXPIRATION_TIME = 1000 * 60 * 60 * 24;
//    生成令牌
    public static String createToken(Map<String,Object> claims){
//        计算过期时间
        Date expirationDate=new Date(System.currentTimeMillis()+EXPIRATION_TIME);
        return Jwts.builder().setClaims(claims).setExpiration(expirationDate).signWith(SignatureAlgorithm.HS256,SECRET_KEY).compact();
    }
    public static Claims analysisToken(String token){
        return Jwts.parserBuilder().setSigningKey(SECRET_KEY).build().parseClaimsJws(token).getBody();
    }
    // 验证token是否有效
    public static boolean validateToken(String token) {
        try {
            analysisToken(token);
            return true;
        } catch (ExpiredJwtException e) {
            // token过期
            System.err.println("Token已过期: " + e.getMessage());
        } catch (UnsupportedJwtException e) {
            // 不支持的token
            System.err.println("不支持的Token格式: " + e.getMessage());
        } catch (MalformedJwtException e) {
            // token格式错误
            System.err.println("Token格式错误: " + e.getMessage());
        } catch (SignatureException e) {
            // 签名验证失败
            System.err.println("Token签名验证失败: " + e.getMessage());
        } catch (IllegalArgumentException e) {
            // token为空或null
            System.err.println("Token为空: " + e.getMessage());
        } catch (Exception e) {
            // 其他异常
            System.err.println("Token验证异常: " + e.getMessage());
        }
        return false;
    }
}
